<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
</body>
<script>
        //把函数当做返回值，记得在返回前调用函数
        let fn1=function (a,b){
            console.log('调用fn1');
            return a+b;
        }
        function fn2(f){
            console.log('调用fn2');
            return f;
        }
        console.log(fn1);
        console.log(fn1());
        console.log(fn2(fn1(3,4)));

        //作用域：作用的范围
        //const定义常量
        /*var和let的区别：
        1.var可以重复声明（变量名可以重复），let不允许
        2.var可以先试用，再声明变量（声明提升），而let必须先声名在使用，如果未
        */
       var num1=84;
       let num2=12;
       console.log(num1);
       console.log(num2);
       var num1='hello';
       //let num2='word';
       console.log(num1);
       console.log(num2);
        /*js运行分两个部分：
        1.解析（编译）：语法检查、声明所有的变量和函数（变量声明在最前方）
        2.执行：变量赋值、依据执行顺序执行代码
        */
       console.log('---作用域----');
       let a=1;
       var b=2;
       function myfun(){
        let c=3;
        var d=4;
        console.log(a);
        console.log(b);
        console.log(c);
        console.log(d);
       }
       myfun();
        console.log(a);
        console.log(b);
        console.log(c);
        console.log(d);

        

</script>
</html>